iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
佛心分享-SideProject30

從0開始—初階程式語言學習者的必經之路系列 第 19

DAY19製作問卷—JFrame主要使用方式

  • 分享至 

  • xImage
  •  

以前介紹過GUI,今天設計一個主要使用其功能及運用JFrame的表單設計

###目錄
1. 導入類
2. 創建問卷主視窗 (JFrame)
** 3. 添加問卷問題和元件**
4. 運行程式
5. 程式碼完整範例

1. 導入類
import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

2. 創建問卷主視窗 (JFrame)
public class Questionnaire extends JFrame {
public Questionnaire() {
setTitle("問卷調查");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new GridLayout(5, 2)); // 設置為5行2列的網格佈局
}
}

3. 添加問卷問題和元件
這裡包括了文本框、單選按鈕(用於選擇問題的選項),以及一個提交按鈕。

public class Questionnaire extends JFrame {
public Questionnaire() {
setTitle("問卷調查");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new GridLayout(5, 2));

    // 問題1:請輸入您的姓名
    JLabel nameLabel = new JLabel("請輸入您的姓名:");
    JTextField nameField = new JTextField();

    // 問題2:您的年齡範圍
    JLabel ageLabel = new JLabel("您的年齡範圍:");
    String[] ageOptions = {"18-25", "26-35", "36-45", "46以上"};
    JComboBox<String> ageComboBox = new JComboBox<>(ageOptions);

    // 問題3:您的性別
    JLabel genderLabel = new JLabel("您的性別:");
    JRadioButton maleButton = new JRadioButton("男性");
    JRadioButton femaleButton = new JRadioButton("女性");
    ButtonGroup genderGroup = new ButtonGroup();
    genderGroup.add(maleButton);
    genderGroup.add(femaleButton);

    // 提交按鈕
    JButton submitButton = new JButton("提交");

    // 將元件添加到JFrame
    add(nameLabel);
    add(nameField);
    add(ageLabel);
    add(ageComboBox);
    add(genderLabel);
    add(maleButton);
    add(new JLabel()); // 用於佈局填充
    add(femaleButton);
    add(new JLabel()); // 用於佈局填充
    add(submitButton);

    // 添加按鈕的事件處理
    submitButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String name = nameField.getText();
            String age = (String) ageComboBox.getSelectedItem();
            String gender = maleButton.isSelected() ? "男性" : "女性";
            
            JOptionPane.showMessageDialog(null, 
                "姓名: " + name + 
                "\n年齡範圍: " + age + 
                "\n性別: " + gender);
        }
    });
}

public static void main(String[] args) {
    Questionnaire questionnaire = new Questionnaire();
    questionnaire.setVisible(true);
}

}

4. 運行程式
在 main 方法中創建 Questionnaire 的實例並設置為可見。這段程式碼會產生一個問卷表單,讓使用者可以輸入姓名、選擇年齡範圍和性別,然後提交問卷。

5. 程式碼完整範例
import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Questionnaire extends JFrame {
public Questionnaire() {
setTitle("問卷調查");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new GridLayout(5, 2));

    JLabel nameLabel = new JLabel("請輸入您的姓名:");
    JTextField nameField = new JTextField();

    JLabel ageLabel = new JLabel("您的年齡範圍:");
    String[] ageOptions = {"18-25", "26-35", "36-45", "46以上"};
    JComboBox<String> ageComboBox = new JComboBox<>(ageOptions);

    JLabel genderLabel = new JLabel("您的性別:");
    JRadioButton maleButton = new JRadioButton("男性");
    JRadioButton femaleButton = new JRadioButton("女性");
    ButtonGroup genderGroup = new ButtonGroup();
    genderGroup.add(maleButton);
    genderGroup.add(femaleButton);

    JButton submitButton = new JButton("提交");

    add(nameLabel);
    add(nameField);
    add(ageLabel);
    add(ageComboBox);
    add(genderLabel);
    add(maleButton);
    add(new JLabel()); // 用於佈局填充
    add(femaleButton);
    add(new JLabel()); // 用於佈局填充
    add(submitButton);

    submitButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String name = nameField.getText();
            String age = (String) ageComboBox.getSelectedItem();
            String gender = maleButton.isSelected() ? "男性" : "女性";
            
            JOptionPane.showMessageDialog(null, 
                "姓名: " + name + 
                "\n年齡範圍: " + age + 
                "\n性別: " + gender);
        }
    });
}

public static void main(String[] args) {
    Questionnaire questionnaire = new Questionnaire();
    questionnaire.setVisible(true);
}

}
—-
###JFrame介紹
JFrame 是Java Swing庫中用於創建圖形用戶界面(GUI)的頂層容器之一。它代表應用程式的主視窗,並且通常包含其他Swing元件,如按鈕、文本框、標籤等。JFrame 是一個非常重要的類,因為它提供了顯示和管理應用程式的視窗界面的基本功能。

JFrame 的主要功能和特性

  1. 基本結構:

    • JFrame 是繼承自 java.awt.Frame 的類,它提供了一個帶有標題欄、邊框和按鈕(如最小化、最大化和關閉按鈕)的窗口。
    • JFrame 是一個容器,這意味著它可以包含其他Swing元件,如 JPanelJButtonJLabel 等。
  2. 創建JFrame:

    • 可以通過 new JFrame() 來創建一個新的框架對象,也可以通過 JFrame(String title) 創建一個帶標題的框架。
    • 例子:
      JFrame frame = new JFrame("My Application");
      
  3. 設置JFrame的大小和位置:

    • setSize(int width, int height) 設置框架的寬度和高度。
    • setLocation(int x, int y) 設置框架在螢幕上的位置。
    • setLocationRelativeTo(null) 將框架設置在螢幕的中央。

    例子:

    frame.setSize(400, 300); // 設置框架大小為400x300像素
    frame.setLocationRelativeTo(null); // 居中顯示
    
  4. 關閉操作:

    • setDefaultCloseOperation(int operation) 用於指定用戶點擊「關閉」按鈕時的操作。常見選項包括:
      • JFrame.EXIT_ON_CLOSE: 結束應用程式。
      • JFrame.HIDE_ON_CLOSE: 隱藏視窗但不結束應用程式。
      • JFrame.DISPOSE_ON_CLOSE: 釋放視窗資源,但不結束應用程式。

    例子:

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
  5. 佈局管理:

    • JFrame 可以使用不同的佈局管理器來安排其內容,常見的佈局管理器有 BorderLayoutFlowLayoutGridLayout 等。
    • 例如,使用 GridLayout 將框架設置為3行2列的佈局:
      frame.setLayout(new GridLayout(3, 2));
      
  6. 添加元件:

    • 可以使用 add(Component comp) 方法將元件添加到 JFrame 中。
    • 例如,添加一個按鈕到框架:
      JButton button = new JButton("Click Me");
      frame.add(button);
      
  7. 顯示JFrame:

    • 使用 setVisible(true) 方法來顯示框架,這是讓框架出現在螢幕上的最後一步。
    • 例子:
      frame.setVisible(true);
      

完整的JFrame範例

import javax.swing.*;

public class MyFrameExample {
    public static void main(String[] args) {
        // 創建JFrame實例
        JFrame frame = new JFrame("My Application");

        // 設置框架大小和位置
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);

        // 設置關閉操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 設置佈局管理器
        frame.setLayout(new GridLayout(2, 1));

        // 添加元件
        JLabel label = new JLabel("Hello, JFrame!", JLabel.CENTER);
        JButton button = new JButton("Click Me");

        frame.add(label);
        frame.add(button);

        // 顯示框架
        frame.setVisible(true);
    }
}

JFrame 的常見方法

  • setTitle(String title): 設置框架的標題。
  • setSize(int width, int height): 設置框架的大小。
  • setLocation(int x, int y): 設置框架的位置。
  • setLocationRelativeTo(Component c): 設置框架相對於另一個組件的位置,如果為 null,則居中顯示。
  • setDefaultCloseOperation(int operation): 設置關閉操作。
  • setLayout(LayoutManager manager): 設置佈局管理器。
  • add(Component comp): 向框架中添加元件。
  • setVisible(boolean b): 顯示或隱藏框架。

上一篇
DAY18別依賴Google表單~製作屬於自己的表單吧
下一篇
DAY20結合過往所學-隨即生成及界面製作的找找看遊戲
系列文
從0開始—初階程式語言學習者的必經之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言